package com.gxc.xor;

/**
 * 给定一个非负数组，每一个值代表该位置上有几个铜板。
 * a和b玩游戏，a先手，b后手,轮到某个人的时候，只能在一个位置上拿任意数量的铜板，但是不能不拿。
 * 谁最先把铜板拿完谁赢。
 * 假设a和b都极度聪明，请返回获胜者的名字。
 *
 * 解法：
 * 求数组的异或和，
 * 数组的异或和为0，后手胜利；异或和不为0，先手胜利。
 * 假设先手先拿，先手拿完后总能保持数组剩余的数量异或和0，
 * 则后手拿完后肯定是异或和不为0，则先手肯定能赢。
 * 因为先手总是面对异或和不为0的数量，所以肯定有硬币剩余，后手总是面对异或和为0的，最后一个硬币一定是先手拿。
 *
 */
public class Game {

    public static void main(String[] args) {

    }

    public static String process(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = sum ^ arr[i];
        }
        return sum==0?"后手":"先手";
    }
}
